package site.thatime.hyts.model;

public abstract class AbstractModel implements Model {
	private String id;

	public AbstractModel() {
	}

	public AbstractModel(String id) {
		setId(id);
	}

	public String getId() {
		return id == null ? null : id.trim(); // sql server中的char类型的列当存储空间没有用完的时候，会在后面有空格
	}

	@SuppressWarnings("unchecked")
	public <T extends Model> T setId(String id) {
		this.id = (id == null ? null : id.trim());
		return (T) this;
	}

	@Override
	public String toString() {
		return "AbstractModel [id=" + id + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		AbstractModel other = (AbstractModel) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}
}
